/*
    TypeScript 循环
 */
/**
 * for 循环:用于多次执行一个语句序列，简化管理循环变量的代码。
 * for...in 循环:用于一组值的集合或列表进行迭代输出。
 * for…of 、forEach、every 和 some 循环:for...of 语句创建一个循环来迭代可迭代的对象。在 ES6 中引入的 for...of 循环，以替代 for...in 和 forEach() ，并支持新的迭代协议。for...of 允许你遍历 Arrays（数组）, Strings（字符串）, Maps（映射）, Sets（集合）等可迭代的数据结构等。
 * while 循环:在给定条件为 true 时，重复执行语句或语句组。循环主体执行之前会先测试条件。
 * do...while 循环:在循环的尾部检查它的条件。
 */
//for
var num = 5;
var i;
var factorial = 1;
for (i = num; i >= 1; i--) {
    factorial *= i;
}
console.log(factorial);
//for...in, ES5标准，遍历key.
var j;
var n = "a b c";
for (j in n) {
    console.log(n[j]);
}
//for...of, ES6标准，遍历value.
var someArray = [1, "string", false];
for (var _i = 0, someArray_1 = someArray; _i < someArray_1.length; _i++) {
    var entry = someArray_1[_i];
    console.log(entry); // 1, "string", false
}
//forEach
var list = [4, 5, 6];
list.forEach(function (val, idx, array) {
    // val: 当前值
    // idx：当前index
    // array: Array
});
//every
list.every(function (val, idx, array) {
    // val: 当前值
    // idx：当前index
    // array: Array
    return true; // 继续循环
    // return false 将停止循环
});
//while
var num = 5;
var factorial = 1;
while (num >= 1) {
    factorial = factorial * num;
    num--;
}
console.log("5 的阶乘为：" + factorial);
//do...while
var n_ = 10;
do {
    console.log(n_);
    n_--;
} while (n_ >= 0);
//break, continue
